超强布尔表达式
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
到目前为止,我们在if测试或循环中所使用到的布尔表达式都很简单。接下来你会在预先写好的程序代码中看到一些更复杂的布尔表达式,现在先来看一下这些表达式。
“与”和“或”运算符(&&和||)
假如说你正在编写chooseCamera()方法,它有一些选择相机的规则。或许你会想要选择介于$50与$1000之间的相机,但有时你会想要更精确的指定范围,例如说:
“如果价格范围在$300和$400之间,就选择X牌相机”
if (price >= 300 && price < 400) {
camera = "X";
}
又假如说有10种不同品牌的相机可供选择,你有这样的逻辑来限制品牌:
if (brand.equals("A") || brand.equals("B")) {
//执行A或B才能进行的工作
}
这样的布尔运算式会很大并且很复杂:
if ((zoomType.equals("光学") &&
(zoomDegree >= 3 && zoomDegree <= 8)) ||
(zoomType.equals("数字") &&
(zoomDegree >= 5 && zoomDegree <= 12))) {
//执行适当的工作
}
技术上,你可能会搞不太清楚达些运算符的优先级,与其花时间研究这些规则的优先级,不如用括号来让程序代码更容易阅读。
“不等于"运算符(!=和!)
假如说你有这样的规则:有一项规则适用于型号为2000以外的所有相机。
if (model != 2000) {
//非modal 2000的工作
}
或者是这样,非X品牌的所有相机:
if (!brand.equals("X")) {
//非X牌的工作
}
短运算符(&&和||)
像&&与||,这些我们已经看过的运算符都称为短运算符。在&&表达式中,左右两边都为true这个表达式才会为true。因此如果Java虚似机发现左方的表达式为false,则它不需也不会去计算右方的表达式才知道要返回false,||也有相同的特点。所以我们可以用下面这种方式来避免调用内容为null的指针变量的方法:
if (null != refVar && refVar.isValidType()) {
//执行有效变量的工作
}
在线练习
{$ activeFileHint $}